# 元组（tuple）基础操作
# 定义空元组
info = ()
info1 = tuple()
print(info, info1)  # 输出：() ()

# 非空元组
info2 = (10, 22, 33, 55)
print(info2)  # (10, 22, 33, 55)

# 单个元素的元组（必须加逗号）
info3 = ("55",)
info4 = 1, 2, 3, 4  # 可省略括号
print(type(info3), type(info4))  # 均为 tuple


# 元组元素查询
info = (11, "aaa", 1.88)
print(info[2])  # 按索引查：1.88

info = (1, 2, 3, 2)
print(info.count(2))  # 统计元素出现次数：2


# 利用元组交换变量值
num1, num2 = 100, 200
num1, num2 = num2, num1  # 简洁交换
print(num1, num2)  # 200 100


# 字典（dict）基础操作
# 定义空字典
info = {}
info1 = dict()
print(type(info), type(info1))  # 均为 dict

# 非空字典（键值对形式）
info2 = {"name": "张三", "age": 22}
print(info2)  # {'name': '张三', 'age': 22}


# 字典增改操作
info = {"name": "张三"}
info["name"] = "李四"  # 键存在则修改
info["age"] = 22  # 键不存在则新增
print(info)  # {'name': '李四', 'age': 22}


# 字典删除操作
info.pop("age")  # 删除指定键
print(info)  # {'name': '李四'}


# 字典查询操作
info = {
    "name": "tom",
    "hobby": {"sport": ["篮球", "足球"]}
}
print(info["name"])  # 直接查询（键不存在报错）
print(info.get("age"))  # get查询（键不存在返回None）
print(info["hobby"]["sport"][1])  # 嵌套查询：足球


# 字典合并
dict1 = {"name": "张三"}
dict2 = {"height": 1.88}
dict1.update(dict2)  # 合并dict2到dict1
print(dict1)  # {'name': '张三', 'height': 1.88}


# 字典遍历
info = {"name": "tom", "age": 18}
for k in info.keys():  # 遍历键
    print(k)
for v in info.values():  # 遍历值
    print(v)
for k, v in info.items():  # 遍历键值对
    print(k, v)